For more than 40 years, technologists have known that one way to lower computing costs is to simultaneously share resources across multiple components and/or machines. This concept eventually led to the so-called client/server networking model where multiple desktop computers were linked together to a server where files and printer resources could be shared. Given the success achieved in improved performance and lowered costs through virtual servers, companies have been diligently attempting to replicate their efforts with “virtual desktops”, which will now be explained.
As a user interfaces with a client computing system (hereinafter referred to as a “client”), the user is presented with a desktop environment. The desktop environment may include an intuitive visualization of various icons, windows, and other tools that that user may interact with to manipulate the various applications and environments offered by the desktop environment.
As events occur (such as user input), the desktop environment is processed in a manner that is appropriate given the event, resulting in perhaps some change to the state of the desktop environment. Conventionally, such desktop processing occurs on the client. However, desktop virtualization involves the offloading of the desktop processing to a location other the client (hereinafter referred to as a “virtual machine host”, “host computing system” or simply “host”), which location is perhaps even remote from the client. That offloaded location may be a server, a server cluster, or a server cloud.
The host maintains a virtual machine for each supported desktop environment. The virtual machine has access to all of the desktop state necessary to construct an image for how the desktop environment should appear. The virtual machine also manages the processing that serves up desktop images to the corresponding client, which are rendered by the client as they are received.
As the client interacts with the displayed desktop image, that client input is transmitted to the host. The corresponding virtual machine at the centralized desktop location interprets the client input, and processes the desktop. In response to this input, or in response to some other detected event, the virtual machine changes the state of the desktop if appropriate. If this changed state results in a change in how the desktop appears, the virtual machine constructs a different desktop image, and causes the host to transmit the altered desktop image to the client. From the user's perspective, this occurs often fast enough that the displayed desktop at the client is substantially immediately responsive to the user input at the client.
A typical host may manage a number of virtual machines for a corresponding number of clients. In some cases, the host may manage hundreds of virtual machines. The host provides software and data support (hereinafter referred to as the “support resources”) to the virtual machine(s). For instance, the operating system and certain applications may be provided by the host. Supporting data may also be included within the support resources. For instance, user data (such as persistent preference information) may also be stored by the host.
All of the software and data support resources are conventionally located on the host itself. An alternative conventional solution occurs when an organization has access to multiple hosts. To provide backup, the organization will provide access to a storage area network (SAN) to multiple physical appliances, and store the software and data support resources on the SAN. If a failure were to occur with a host, the support resources are still available on the SAN from the other physical appliance. Thus, an instance of the physical machine may be constructed on the other host, and mapped to the corresponding software and data storage resources on the SAN, thereby effecting recovery.